package edu.zut.cs.network;

import java.util.Scanner;
import java.util.Random;
import java.util.Arrays;

public class ArrayDemo {
public static void main(String[] args) {
//    动态初始化一维数组
    int[] array = new int[10];
    Random rand = new Random();
    for (int i = 0; i < array.length; i++) {
        array[i] = rand.nextInt(100);
    }
//    遍历一维数组
    System.out.println("一维数组的值为：");
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + "  ");
    }
    System.out.println();
//    使用array.sort方法进行数组遍排序
    Arrays.sort(array);
    System.out.println("排序后的一维数组的值为：");
    for (int i = 0; i < array.length; i++) {
        System.out.print(array[i] + "  ");
    }
    System.out.println();
//    使用Arrays.binarySeach（）实现数组中值的查找
//    使用Arrays.binarySeach（）前必须保证数组是升序的
//    若查找的数值在数组中，则返回数值在数组中的下标，若有多个相同的值，则返回第一个值得下标
//    若查找的数值不在数组中，则返回负数（-1）
//    查找的数值由用户输入
    System.out.println("请输入需要查找的数值：");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt();
    int index = Arrays.binarySearch(array, num);
    if (index >= 0)
        System.out.println("查找的" + num + "值存在，在数组中的位置是：" + index);
    else
        System.out.println("查找的" + num + "值不存在");
//    数值复制功能
    int[] copyArray = Arrays.copyOf(array, array.length);
    System.out.println("复制后的一维数组的值是：");
    for (int i = 0; i < array.length; i++) {
        System.out.print(copyArray[i] + "  ");
    }
    System.out.println();

    int[] copyArray1 = Arrays.copyOf(array, 5);
    System.out.println("复制后的一维数组的值是：");
    for (int i = 0; i < copyArray1.length; i++) {
        System.out.print(copyArray1[i] + "  ");
    }
    System.out.println();

    int[] copyArray2 = Arrays.copyOfRange(array,1,4);
    System.out.println("复制后的一维数组的值是：");
    for (int i = 0; i < copyArray2.length; i++) {
        System.out.print(copyArray2[i] + "  ");
    }
    System.out.println();
//    数组比较equals（）
//    如果两个数组中相同位置的值相同则认为两个数组是相同的
//    判断array与copyArray两个数组是否相同
    boolean flag = Arrays.equals(array,copyArray);
    if(flag)
        System.out.println("两个数组相同");
    else
        System.out.println("两个数组不同");
//    判断array与copyArray1两个数组是否相同
    boolean flag1 = Arrays.equals(array,copyArray1);
    if(flag1)
        System.out.println("两个数组相同");
    else
        System.out.println("两个数组不同");

//    如果两个数组是空的，则比较结果会如何？
//    如果为空，则认为两数组是相同的
    int[] array1 = null;
    int[] array2 = null;
    boolean flag2 = Arrays.equals(array1,array2);
    if(flag2)
        System.out.println("两个数组相同");
    else
        System.out.println("两个数组不同");


 }


}







